package com.ushine.web.template.transactional.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ushine.web.component.exception.ServiceException;
import com.ushine.web.template.transactional.model.SecondTransactionDO;

import java.util.List;

/**
 * @Author: yls
 * @Date 2022/2/14 10:53
 * @Description: 模拟事务控制 service
 * @Version 1.0
 **/
public interface ISecondTransactionService extends IService<SecondTransactionDO> {

    /**
     * 功能描述:
     * 〈 添加数据 〉
     *
     * @param secondTransaction 事务控制实体
     * @return : void
     * @author : yls
     * @date : 2022/2/14 11:00
     */
    void insert(SecondTransactionDO secondTransaction);

    /**
     * 功能描述:
     * 〈 模拟插入数据的时候出现异常 〉
     *
     * @param secondTransaction 事务控制实体
     * @return : void
     * @author : yls
     * @date : 2022/2/14 12:51
     * @throws ServiceException 服务端自定义异常
     */
    void insertByException(SecondTransactionDO secondTransaction) throws ServiceException;

    /**
     * 功能描述:
     * 〈模拟插入数据的时候出现异常〉
     *
     * @param secondTransaction 事务控制实体
     * @return : void
     * @author : yls
     * @date : 2022/03/02 14:28
     * @throws ServiceException 服务端自定义异常
     */
    void insertNestedByException(SecondTransactionDO secondTransaction) throws ServiceException;

    /**
     * 功能描述:
     * 〈 查询所有的事务控制类 〉
     *
     * @param
     * @return : java.util.List<com.ushine.web.web.transactional.mode.SecondTransactionalDO>
     * @author : yls
     * @date : 2022/2/14 11:01
     */
    List<SecondTransactionDO> listSecondTransactions();
}
